/**
 * 
 */
package model.utility;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import model.core.utente.Commissario;
import model.core.utente.Giocatore;
import model.core.utente.GiocatoreInterface;
import model.core.utente.Squadra;

/**
 * @author Giuseppe Fusco (fusgius19@gmail.com)
 *
 */
public class Utility {

	public static SimpleDateFormat SDF = new SimpleDateFormat("dd-MM-yyyy HH:mm");
	
	public static SimpleDateFormat SDF_TO_NAME = new SimpleDateFormat("dd_MM_yyyy_HH_mm_ss");
	
	public static boolean isThereGiocatore(List<? extends GiocatoreInterface> giocatori, GiocatoreInterface giocatore){
		for(GiocatoreInterface g: giocatori)
		{
			if(g instanceof Giocatore && giocatore instanceof Giocatore){
				Giocatore gi = (Giocatore) g;
				if(gi.getMatricola().equals(((Giocatore) giocatore).getMatricola()))
					return true;
			}else if(g instanceof Squadra && giocatore instanceof Squadra){
				Squadra s = (Squadra) g;
				if(s.getNome().equals(((Squadra) giocatore).getNome()))
					return true;
			}
		}
		return false;
	}
	
	public static boolean isThereGiocatore(List<Giocatore> giocatori, Giocatore giocatore){
		for(Giocatore g: giocatori)
			if(g.equals(giocatore))
				return true;
		return false;
	}
	
	public static boolean isEqualsSquadre(ArrayList<? extends GiocatoreInterface> giocatori, Squadra squadra){
			for(Giocatore gio: squadra.getPartecipanti())
				for(GiocatoreInterface g: giocatori)
					if(isThereGiocatore(((Squadra) g).getPartecipanti(), gio))
					return true;
		return false;
	}
	
	public static boolean isThereCommissario(List<Commissario> commissione, Commissario commissario){
		for(Commissario g: commissione)
			if(g.equals(commissario))
				return true;
		return false;
	}
	
	public static ArrayList<File> getFile(File file){
		ArrayList<File> a = new ArrayList<File>();
		File[] list= file.listFiles();
		if(list.length>0){
			for(int i=0; i<list.length; i++){
				if(list[i].isDirectory())
					a.addAll(getFile(list[i]));
				else
					a.add(list[i]);
			}
		}
		return a;
	}
	
	public static boolean isDBMS(Class<?> clazz){
		if(clazz!=null && !clazz.getSimpleName().equals("Object")){
			if(clazz.getSuperclass()!=null){
				Class<?> c = clazz.getSuperclass();
				if(c!=null && c.getSuperclass()!=null && c.getSuperclass().getSimpleName().equals("Object")){
					Class<?>[] l = c.getInterfaces();
					for(int i=0; i<l.length; i++)
						if(l[i].getName().equals("model.facade.persistence.DBMS"))
							return true;
					return false;
				}
				return isDBMS(c);
			}else
				return false;
		}else
			return false;
	}
	
	
}
